import Vue from 'vue';
import App from './App.vue';
import router from './router';
import store from './store';
import zsy from './zsy'; //rem自适应


import axios from 'axios';
import VueAxios from 'vue-axios';
Vue.use(VueAxios, axios);

//加载vant
import Vant, { Dialog}from 'vant';
import 'vant/lib/index.css';
Vue.use(Vant);
//懒加载
import { Lazyload } from 'vant';
Vue.use(Lazyload);

//上拉菜单
import { ActionSheet } from 'vant';
Vue.use(ActionSheet);
//轻提示
import { Toast } from 'vant';
Vue.use(Toast);
//搜索
import { Search } from 'vant';
Vue.use(Search);


//加载音乐插件 
import APlayer from '@moefe/vue-aplayer';
Vue.use(APlayer, {
  defaultCover: 'https://github.com/u3u.png', // 设置播放器默认封面图片
  productionTip: false, // 是否在控制台输出版本信息
});

// 汉字转拼音  （其中一个功能）  主要用于搜索文字转拼音搜索
//Mtils是一套前端代码集合，提供常用的数据校验、数据加密、扩展函数、便捷函数。 
import Mtils  from './Mtils';
Vue.prototype.Mtils = Mtils;

//省份城市查找
import city  from './city';
Vue.prototype.city = city;

// 使用fastclick组件解决移动端click事件300ms延迟的问题
import fastclick from 'fastclick'
fastclick.attach(document.body)

// 实现图片懒加载，节省用户流量，优化页面加载速度
import VueLazyload from 'vue-lazyload'
Vue.use(VueLazyload)

// 时间插件
import moment from 'moment'//导入文件
Vue.prototype.$moment = moment;//赋值使用
moment.locale('zh-cn');//需要汉化


Vue.config.productionTip = false;

//跳转页面时返回顶部
router.afterEach((to,from,next) => {
  window.scrollTo(0,0);
});

//设置cookie,增加到vue实例方便全局调用
//vue全局调用的理由是，有些组件所用到的接口可能需要session验证，session从cookie获取
//当然，如果session保存到vuex的话除外
Vue.prototype.setCookie = (c_name, value, expiredays) => {
  // console.log(c_name, value, expiredays);
  var exdate = new Date();
  // document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString());
  // document.cookie="username=John Doe; expires=Thu, 13 Jun 2019 17:34:00 GMT";
  document.cookie =  c_name + "=" + escape(value)+';max-age='+expiredays+";"//设置一个过期时间
  // console.log(document.cookie);
}


//获取cookie、  //需要安装 npm i -S core-js  不然报错
function getCookie(name) {
  var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
  if (arr = document.cookie.match(reg))
    return (arr[2]);
  else
    return null;
}
Vue.prototype.getCookie = getCookie;

//删除cookie
Vue.prototype.delCookie =(name) => {
  var exp = new Date();
  exp.setTime(exp.getTime() - 1);
  var cval = getCookie(name);
  if (cval != null)
    document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString();
}

new Vue({
  router,
  store,
  zsy,
  render: h => h(App),
  created() {
    //刷新页面时  vuex不会丢失数据
    if(this.getCookie('session')){
      // 区分刷新页面   和退出后重新进的  区别
      if(window.location.pathname == '/' && this.$route.path == '/'){
        this.$router.push('/login');
      }
      // console.log(this.$route.path,window.location.pathname)
      this.$store.commit('updateUserInfo',JSON.parse(sessionStorage.getItem("userInfos")) );
      this.$store.commit('add',JSON.parse(sessionStorage.getItem("names")) );
      this.$store.commit('getMovieDeatil',JSON.parse(sessionStorage.getItem("movieDetail")) );
      this.$store.commit('getMusicDetail',JSON.parse(sessionStorage.getItem("musicDetail")) );
      this.$store.commit('getSongSheet',JSON.parse(sessionStorage.getItem("songSheetVuex")) );
      this.$store.commit('getSearchList',JSON.parse(sessionStorage.getItem("searchList")) );
      this.$store.commit('getAplayer',JSON.parse(sessionStorage.getItem("isAplayer")) );
    }else{
      //session过期后  刷新页面进入login页面
      this.$router.push('/login');
    }
  },
  mounted () {
  
  },
  methods:{
   
  },
  watch:{
    //监听cookie状态
    $route(to,from){
      //登录状态30分钟后过期
      // console.log(to.path)
      if(!this.getCookie('session')){//如果cookie时间过了就会注销
        //删除cookie并跳到登录页
        this.delCookie('session');
        //注销时  清除sessionStorage里面的数据
        sessionStorage.clear();//清除所有缓存
        this.$router.push('/login');
      }else{
        //session存在时 路由跳转
        if(to.path&&to.path !== from.path&&this.getCookie('session')){
          
          //进入新的路由后 设置30分钟登录状态，保持登录状态
          let expireDays = 60*30;
          this.setCookie('session','hahahahah', expireDays);
        }
        //在cookie还没失效的时候  进入login页面  会自动跳转到home页面
        if(this.getCookie('session')&&to.path == '/login'&&JSON.parse(sessionStorage.getItem("names"))){
          Dialog.alert({
            message:'你已经登录了！'
          }).then(()=>{
            this.$router.push('/home');
          })
        }
      }
    }
  },
}).$mount('#app')
